In today's technology-dependent world, optimizing performance of computing systems is vital to operation of such systems. A variety of applications can be running on those systems. Users, other applications, components, etc. can depend on their proper operation. Performance optimization of large applications can be difficult. Some conventional approaches include breaking down applications into components and assigning “performance budgets” to the components. A performance budget can be a predetermined period of time that is allotted to running that application and/or generating some form of an output within that predetermined period of time. These budgets can be compared to actual measurements and can be presented to management and/or developers for evaluation of compliance with budgets and/or efficient/inefficient performance of a particular application and/or its components. This implies a potentially long turnaround time between changes in the system and detection of what possibly caused an impact on performance of an application. Currently, there appears to be no technical means to enforce compliance with these agreed-upon performance budgets, which in turn, causes disregard of performance issues and degradation of an overall product outputted by an application or system.
Some currently available approaches include the use of watchdog timers, which can include computer hardware and/or software timers that trigger a system reset or other corrective action if a main program, due to some fault condition, such as a hang, neglects to regularly service the watchdog. A watchdog timer's purpose is typically to bring the system back from the unresponsive state into normal operation. Some watchdog timers can include additional features such as saving debugging information into memory. This information can be used for debugging the problem that caused the fault. Some conventional watchdog timers ensure that if completion of its information saving task is not reported within a certain amount of time, the system will reset with or without the information saved. The most common use of watchdog timers is in embedded systems, where a specialized timer can be a built-in unit of a microcontroller. Watchdog timers can also trigger fail-safe control systems to move into a safety state, such as turning off motors, high-voltage electrical outputs, and other potentially dangerous subsystems, until the fault is cleared. Conventional watchdog timers include chips that are external to a processor or included within the same chip as the CPU. However, these watchdog timers are typically incapable of either enforcing performance budgets for an application and/or its components or providing immediate feedback to developers concerning performance violations so that timely corrective actions can be undertaken.
However, there is a need for tracking and enforcing application performance budgets. Further, there is a need to automate such tracking and enforcing to improve timely resolution of system faults.